home *** CD-ROM | disk | FTP | other *** search
- #include <exec/memory.h>
-
- #include <stdio.h>
-
- #include <proto/exec.h>
-
- #include "maker.h"
- #include "proto.h"
-
- ULONG gTotMem = 0L;
-
- BOOL GetMem(void **ptr, ULONG size)
- {
- if (*ptr != 0L)
- printf("Entry to GetMem() with non-zero pointer!\n");
-
- *ptr = AllocMem(size, MEMF_CLEAR);
-
- if (*ptr == 0L)
- {
- printf("Error...Out of Memory!");
- return FALSE;
- }
- gTotMem += size;
-
- return TRUE;
- }
-
- BOOL DropMem(void **ptr, long size)
- {
- if (*ptr != 0L && size != 0L)
- {
- FreeMem(*ptr, size);
- *ptr = 0L;
- gTotMem -= size;
- }
- return TRUE;
- }
-
- BOOL RemLink(void **root, void *node)
- {
- LinkNode *tempptr;
-
- /* Find the node in the linked list */
-
- tempptr = (LinkNode *) root;
- while(tempptr->next != 0L && tempptr->next != node)
- tempptr = tempptr->next;
-
- if (tempptr->next == 0L)
- {
- printf("Error: missing node in remlink() ... (corrupted memory)");
- return FALSE;
- }
- else
- {
-
- /* Remove the node */
-
- tempptr->next = ((LinkNode *) node)->next;
- ((LinkNode *) node)->next = 0L;
- return TRUE;
- }
- }
-
- BOOL AddLink(void **root, void *node)
- {
- LinkNode *tempptr;
-
- /* Skip to the end of the linked list */
-
- tempptr = (LinkNode *) root;
- while (tempptr->next != 0L)
- tempptr = tempptr->next;
-
- /* Add the new node to the end of the linked list */
-
- tempptr->next = node;
-
- /* Set the node->next to point to nothing */
-
- ((LinkNode *) node)->next = 0L;
-
- return TRUE;
- }
-
- BOOL InsertLink(void **root, void *node, USHORT pos)
- {
- LinkNode *tempptr;
- USHORT i;
-
- /* find the column header just before the desired position */
-
- tempptr = (LinkNode *) root;
- if (tempptr->next != 0L && pos)
- {
- for (i=0; i<pos; i++)
- {
- tempptr = tempptr->next;
- if (tempptr->next == 0L)
- break;
- }
- }
-
- /* Add the new node to the linked list */
-
- ((LinkNode *) node)->next = tempptr->next;
- tempptr->next = node;
-
- return TRUE;
- }
-
- USHORT NodeCount(void **root)
- {
- USHORT i = 0;
- LinkNode *tempptr;
-
- if (!root)
- return 0L;
-
- tempptr = (LinkNode *) root;
- while(tempptr = tempptr->next)
- i++;
-
- return i;
- }
-
- /*
- Find node number nodenum in a linked list, return its address
- */
-
- LinkNode *FindNode(LinkNode **root, register short nodenum)
- {
- register LinkNode *tempptr;
-
- if (!root)
- return 0L;
-
- tempptr = *root;
-
- while (tempptr && --nodenum >= 0)
- tempptr = tempptr->next;
-
- return (void *) tempptr;
- }
-
- short NodeNum(LinkNode **root, register LinkNode *targetNode)
- {
- register LinkNode *node;
- register short nodeNum;
-
- if (!root)
- return -1;
-
- for (node=*root, nodeNum=0; node; node=node->next, nodeNum++)
- if (node == targetNode)
- break;
-
- if (!node)
- nodeNum = -1;
-
- return nodeNum;
- }
-
-